struct OSQPProfilerSection_ osqp_profiler_sec_impl[] = {
    /* Level 1 detail (coarse) */
    PROFILER_SEC_IMPL(OSQP_PROFILER_SEC_SETUP),
    PROFILER_SEC_IMPL(OSQP_PROFILER_SEC_SCALE),
    PROFILER_SEC_IMPL(OSQP_PROFILER_SEC_OPT_SOLVE),
    PROFILER_SEC_IMPL(OSQP_PROFILER_SEC_ADMM_ITER),
    PROFILER_SEC_IMPL(OSQP_PROFILER_SEC_ADMM_KKT_SOLVE),
    PROFILER_SEC_IMPL(OSQP_PROFILER_SEC_ADMM_UPDATE),
    PROFILER_SEC_IMPL(OSQP_PROFILER_SEC_ADMM_PROJ),
    PROFILER_SEC_IMPL(OSQP_PROFILER_SEC_POLISH),

    /* Level 2 detail (more details) */
    PROFILER_SEC_IMPL(OSQP_PROFILER_SEC_LINSYS_INIT),
    PROFILER_SEC_IMPL(OSQP_PROFILER_SEC_LINSYS_SOLVE),
    PROFILER_SEC_IMPL(OSQP_PROFILER_SEC_LINSYS_SYM_FAC),
    PROFILER_SEC_IMPL(OSQP_PROFILER_SEC_LINSYS_NUM_FAC),
    PROFILER_SEC_IMPL(OSQP_PROFILER_SEC_LINSYS_BACKSOLVE),
    PROFILER_SEC_IMPL(OSQP_PROFILER_SEC_LINSYS_MVM)
};

struct OSQPProfilerEvent_ osqp_profiler_event_impl[] = {
    /* Level 1 detail (coarse) */
    PROFILER_EVENT_IMPL(OSQP_PROFILER_EVENT_RHO_UPDATE),
    PROFILER_EVENT_IMPL(OSQP_PROFILER_EVENT_RESTART_SUFFICIENT),
    PROFILER_EVENT_IMPL(OSQP_PROFILER_EVENT_RESTART_NECESSARY),
    PROFILER_EVENT_IMPL(OSQP_PROFILER_EVENT_RESTART_ARTIFICIAL),
    PROFILER_EVENT_IMPL(OSQP_PROFILER_EVENT_UPDATE_REJECT)
};